package domain;

public class CuadradoEnTablero {

	private boolean vacio;
	private ObjetoEnTablero elem;
//	private LugarVacio lugarvacio;
	
	public CuadradoEnTablero(){
		vacio = true;
//		lugarvacio = new LugarVacio();
		elem = new LugarVacio();
	}
	public ObjetoEnTablero getElem(){
		return this.elem;
	}
	synchronized public void setElem (ObjetoEnTablero elem){
		this.elem = elem;
		this.vacio = false;
	}
	public boolean estaVacio(){
		return this.vacio;
	}
	synchronized public void sacarElem(){
		this.vacio = true;
		elem = new LugarVacio();
	}
	synchronized public void hacerMovimiento(Auto auto, Tablero tablero) {
		if (estaVacio()){
			tablero.getCuadrado(auto.getPosicion()).sacarElem();
			this.setElem(auto);
			auto.setPosicion(auto.nextPoss());
			
		}
		else{
			elem.hacerMovimiento(auto, tablero);
		}
		
	}
	synchronized public void autoEmpujado(Auto auto, Direccion dir, Tablero tablero) {
		if (estaVacio()){
			tablero.getCuadrado(auto.getPosicion()).sacarElem();
			this.setElem(auto);
			auto.setPosicion(dir.getNext(auto.getPosicion()));
			
		}
		else{
			elem.autoEmpujado(auto, dir, tablero);
		}
		
	}
}
